package com.yangjiayu.algorithm.string;

public class Leetcode415 {
    public static String addStrings(String num1, String num2) {
        // 定义一个StringBuffer,保存最终的结果
        StringBuffer result = new StringBuffer();

        //定义遍历两个字符串的初始位置
        int i = num1.length() - 1;
        int j = num2.length() - 1;
        int carry = 0;

        // 从个位开始依次遍历所有数位，只要还有数没有计算，就继续计算，其他数位补0
        while ( i>=  0 || j>=0 || carry != 0 ){
            //取两数当前的对应数位
            int n1 = i >= 0 ? num1.charAt(i) - '0' : 0;//
            int n2 = j >= 0 ? num2.charAt(j) - '0' : 0;

            //计算当前数位的和，并判断是否需要进位
            int sum = n1 + n2 + carry;
            carry = sum / 10;
            result.append(sum % 10);
            i--;
            j--;
        }
        return result.reverse().toString();
    }

    public static void main(String[] args) {
        Leetcode415 leetcode415 = new Leetcode415();
        System.out.println(leetcode415.addStrings("11","123"));
        System.out.println(leetcode415.addStrings("456","77"));
    }
}
